草庐IT

c++ - OpenCV Visual Studio ntdll.dll

全部标签

创建一个简单的计时器应用程序

海湾合作委员会4.4.3VC++2008我想制作一个计时器应用程序,该应用程序可以在Windows和Linux上移植。但是,开始就足够了。我的想法是启动一个计时器并将其设置为指定的秒数。当时间到期时调用回调函数。这是最好的方法吗?非常感谢, 最佳答案 有很多方法可以做一个定时器。这并不难,但你需要想清楚你想要什么。如果你想调用回调,你通常使用一个线程,在调用你的回调之前休眠直到你的延迟结束。如果不想使用线程,可以定期调用计算时间增量的检查器函数。您的api将是一个带有延迟和函数指针以及回调参数的函数。它将启动一个线程,该线程将在延迟

c - c中的文件写入问题

我在我的c应用程序中写日志文件,写文件的方法是fopen_s(&fMainFile,"c:\\LOG\\Filter.txt","a");fprintf(fMainFile,"SomeText");fclose(fMainFile);我打开handle,写完后我关闭了它,但是写了一段时间后我的应用程序崩溃了,谁能解决这个问题,一次又一次地打开和关闭handle有多危险,或者提出任何其他建议处理文件的方法。 最佳答案 fMainFile是如何定义的?我怀疑你应该:fopen_s(&fMainFile,"c:\\LOG\\Filter.

c++ - 激活上下文导致动态加载的 DLL 上的文件句柄泄漏

我有一个动态加载和卸载的DLL,它需要COMCTL32.dll>=v6.0和MSVCR>=v9.0。为确保加载正确的版本,我在VisualStudio项目设置中启用list文件生成,并将此条目添加到另一个list文件:type="win32"name="Microsoft.Windows.Common-Controls"version="6.0.0.0"processorArchitecture="*"publicKeyToken="6595b64144ccf1df"language="*"/>在一个测试程序中我调用了LoadLibrary()其次是FreeLibrary()该DLL,

c++ - 多线程不利用多核?

我的电脑是双核core2Duo。我已经在应用程序的缓慢区域实现了多线程,但我仍然注意到CPU使用率从未超过50%,并且在多次迭代后仍然滞后。这是正常的吗?我希望它能让我的cpu达到100%,因为我将它分成4个线程。为什么它仍然可以限制在50%?谢谢参见WhatamIdoingwrong?(multithreading)对于我的实现,除了我修复了该代码存在的问题 最佳答案 查看您的代码,您在紧密循环中进行了大量分配——在每次迭代中,您动态分配两个双元素vector,然后将它们推回结果vector(从而复制这些vector);最后一次推

c++ - 从 Windows 网络位置打开文件

我可以从已安装的网络驱动器打开文件,但不能从未安装的网络驱动器打开文件,例如\\mycomp\folder2\hi.bmp有什么解决办法吗? 最佳答案 以下代码片段对我有用:charbuffer[1000];FILE*file;size_tbytesRead;file=fopen("\\\\server\\share\\test.dat","rb");if(file!=NULL){bytesRead=fread(buffer,sizeof(char),sizeof(buffer),file);fclose(file);}另请注意fo

windows - XChat for Windows 中的 minigtk.dll 是如何工作的?

我过去常常为Windows编写一些pygtk应用程序,但是GTKforWindows库总是很难维护。我发现XChatforWindows使用472KBminigtk.dll。我也可以将其用作pygtk和其他工具的标准gtk替代品吗? 最佳答案 minigtk主要是gtk的修改形式,其中gtk的部分必须运行XChat,但是minigtk源的使用严重受限,因为Zed不希望其他人使用它。 关于windows-XChatforWindows中的minigtk.dll是如何工作的?,我们在Stac

c++ - 谁能解释为什么这两个转换为 unsigned long long 会产生不同的结果?

LARGE_INTEGERlpPerformanceCount,lpFrequency;QueryPerformanceCounter(&lpPerformanceCount);QueryPerformanceFrequency(&lpFrequency);(Count.QuadPart是一个显示CPU计数的longlong)(Freq.QuadPart是一个longlong,表示秒数的频率)尝试实时打印微秒。稳定输出:printf("%llu\n",((longdouble)lpPerformanceCount.QuadPart/lpFrequency.QuadPart)*10000

windows - 崩溃后获取 DLL 地址的函数

我知道当应用程序崩溃时,系统会报告它在mydll.dll中的0x00004b79位置崩溃。我有源代码和二进制文件,但我没有PDB或该DLL构建中的任何列表文件。崩溃是可重复的,但我无法在生产机器上安装调试器,并且在开发或调试环境中不会发生崩溃。我已经设置了Dr.Watson,并且有故障转储和Dr.Watson日志文件。Dr.Watson日志文件包含正在执行的函数的反汇编:10604b708b442408moveax,[esp+0x8]10604b748b542404movedx,[esp+0x4]10604b7850pusheaxFAULT->10604b798b4120moveax,

windows - 调用 kernel32.dll 函数时获取调用堆栈

我有一个更改其当前目录的进程,我想知道它发生的时间和地点。我怎么能那样做?我尝试使用VisualStudio在SetCurrentDirectoryA/SetCurrentDirectoryW中设置断点,但它不起作用。 最佳答案 您是在调试自己的程序,还是没有源代码的程序?VisualStudio调试器对于调试无源应用程序不是很友好;在那种情况下,我会推荐WinDbg或OllyDbg-甚至跳过调试器并使用EasyHook编写一个检测记录器.编辑:尝试在{,,kernel32.dll}_SetCurrentDirectoryA@4处设

c - 防止过多的 LoadLibrary/FreeLibrary

我正在编写一个代理库(称为库A),它只是与系统上可能存在或不存在的另一个DLL(称为库B)的接口(interface)。这个想法是程序将链接到这个库A而不是原始库B;如果系统上没有安装库B,库A将处理错误。所以一个典型的代理函数看起来像这样:intfunction(intarg1,intarg2){HINSTANCEhinstLib;UINTerrormode=SetErrorMode(SEM_FAILCRITICALERRORS);SetErrorMode(errormode|SEM_FAILCRITICALERRORS);hinstLib=LoadLibrary(TEXT(ORIG